home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Technology Seed / Jan. '98 ATS.toast / NavServices1.0b3 / Navigation Services SDK / Interfaces / CIncludes / Navigation.h
Encoding:
C/C++ Source or Header  |  1998-01-12  |  17.2 KB  |  484 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Navigation.h
  3.  
  4.      Contains:    Interface to the Navigation Services SDK
  5.  
  6.      Version:    Technology:    Navigation Services 1.0
  7.                  Release:    To be used with Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1997-98 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __NAVIGATION__
  19. #define __NAVIGATION__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __APPLEEVENTS__
  25. #include <AppleEvents.h>
  26. #endif
  27. #ifndef __TRANSLATION__
  28. #include <Translation.h>
  29. #endif
  30. #ifndef __WINDOWS__
  31. #include <Windows.h>
  32. #endif
  33. #ifndef __CODEFRAGMENTS__
  34. #include <CodeFragments.h>
  35. #endif
  36.  
  37.  
  38.  
  39.  
  40. #if PRAGMA_ONCE
  41. #pragma once
  42. #endif
  43.  
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47.  
  48. #if PRAGMA_IMPORT
  49. #pragma import on
  50. #endif
  51.  
  52. #if PRAGMA_STRUCT_ALIGN
  53.     #pragma options align=mac68k
  54. #elif PRAGMA_STRUCT_PACKPUSH
  55.     #pragma pack(push, 2)
  56. #elif PRAGMA_STRUCT_PACK
  57.     #pragma pack(2)
  58. #endif
  59.  
  60.  
  61. enum {
  62.     kNavMissingKindStringErr    = -5699,
  63.     kNavInvalidCustomControlMessageErr = -5698,
  64.     kNavCustomControlMessageFailedErr = -5697,
  65.     kNavInvalidSystemConfigErr    = -5696
  66. };
  67.  
  68.  
  69.  
  70. enum {
  71.     kNavDialogOptionsVersion    = 0,
  72.     kNavReplyRecordVersion        = 0,
  73.     kNavCBRecVersion            = 0,
  74.     kNavFileOrFolderVersion        = 0,
  75.     kNavMenuItemSpecVersion        = 0
  76. };
  77.  
  78. typedef UInt16                             NavDataVersion;
  79.  
  80. enum {
  81.                                                                 /* input action codes for NavAskSaveChanges() */
  82.     kNavSaveChangesClosingDocument = 1,
  83.     kNavSaveChangesQuittingApplication = 2,
  84.     kNavSaveChangesOther        = 0
  85. };
  86.  
  87. typedef UInt32                             NavAskSaveChangesAction;
  88.  
  89. enum {
  90.                                                                 /* result codes for NavAskSaveChanges() */
  91.     kNavAskSaveChangesSave        = 1,
  92.     kNavAskSaveChangesCancel    = 2,
  93.     kNavAskSaveChangesDontSave    = 3
  94. };
  95.  
  96. typedef UInt32                             NavAskSaveChangesResult;
  97.  
  98. enum {
  99.                                                                 /* result codes for NavAskDiscardChanges() */
  100.     kNavAskDiscardChanges        = 1,
  101.     kNavAskDiscardChangesCancel    = 2
  102. };
  103.  
  104. typedef UInt32                             NavAskDiscardChangesResult;
  105.  
  106. enum {
  107.                                                                 /* which elements are being filtered for objects: */
  108.     kNavFilteringBrowserList    = 0,
  109.     kNavFilteringFavorites        = 1,
  110.     kNavFilteringRecents        = 2,
  111.     kNavFilteringShortCutVolumes = 3
  112. };
  113.  
  114. typedef short                             NavFilterModes;
  115.  
  116. struct NavFileInfo {
  117.     Boolean                         locked;                        /* file is locked */
  118.     Boolean                         resourceOpen;                /* resource fork is opened */
  119.     Boolean                         dataOpen;                    /* data fork is opened */
  120.     Boolean                         reserved;
  121.     UInt32                             dataSize;                    /* size of the data fork */
  122.     UInt32                             resourceSize;                /* size of the resource fork */
  123.     FInfo                             finderInfo;                    /* more file info: */
  124.     FXInfo                             moreFinderInfo;
  125.     char                             reserved2[212];
  126. };
  127. typedef struct NavFileInfo                NavFileInfo;
  128.  
  129. struct NavFolderInfo {
  130.     Boolean                         shareable;
  131.     Boolean                         sharePoint;
  132.     Boolean                         mounted;
  133.     Boolean                         readable;
  134.     Boolean                         writeable;
  135.     Boolean                         reserved;
  136.     UInt32                             numberOfFiles;
  137.     DInfo                             finderInfo;
  138.     DXInfo                             moreFinderInfo;
  139.     char                             reserved2[214];
  140. };
  141. typedef struct NavFolderInfo            NavFolderInfo;
  142.  
  143. union NavFileFolderInfo {
  144.     NavFileInfo                     fileInfo;
  145.     NavFolderInfo                     folderInfo;
  146. };
  147. typedef union NavFileFolderInfo            NavFileFolderInfo;
  148.  
  149. struct NavFileOrFolderInfo {
  150.     UInt16                             version;
  151.     Boolean                         isFolder;
  152.     Boolean                         visible;
  153.     UInt32                             creationDate;
  154.     UInt32                             modificationDate;
  155.     NavFileFolderInfo                 fileAndFolder;
  156. };
  157. typedef struct NavFileOrFolderInfo        NavFileOrFolderInfo;
  158.  
  159. union NavEventDataInfo {
  160.     EventRecord *                    event;                        /* for event processing */
  161.     void *                            param;                        /* points to event specific data */
  162. };
  163. typedef union NavEventDataInfo            NavEventDataInfo;
  164.  
  165. typedef UInt32                             NavContext;
  166.  
  167. struct NavCBRec {
  168.     UInt16                             version;
  169.     NavContext                         context;                    /* used by customization code to call Navigation Services */
  170.     WindowPtr                         window;                        /* the dialog */
  171.     Rect                             customRect;                    /* local coordinate rectangle of customization area */
  172.     Rect                             previewRect;                /* local coordinate rectangle of the preview area */
  173.     NavEventDataInfo                 eventData;
  174.     char                             reserved[226];
  175. };
  176. typedef struct NavCBRec                    NavCBRec;
  177. typedef NavCBRec *                        NavCBRecPtr;
  178.  
  179. enum {
  180.     kNavCBEvent                    = 0,                            /* an event has occurred (update, idle events, etc.) */
  181.     kNavCBCustomize                = 1,                            /* protocol for negotiating customization space */
  182.     kNavCBStart                    = 2,                            /* the navigation dialog is starting up */
  183.     kNavCBTerminate                = 3,                            /* the navigation dialog is closing down */
  184.     kNavCBAdjustRect            = 4,                            /* the navigation dialog is being resized */
  185.     kNavCBNewLocation            = 5,                            /* user has chosen a new location in the browser */
  186.     kNavCBShowDesktop            = 6,                            /* user has navigated to the desktop */
  187.     kNavCBSelectEntry            = 7,                            /* user has made a selection in the browser */
  188.     kNavCBPopupMenuSelect        = 8,                            /* signifies that a popup menu selection was made */
  189.     kNavCBAccept                = 9,                            /* user has accepted the navigation dialog */
  190.     kNavCBCancel                = 10,                            /* user has cancelled the navigation dialog */
  191.     kNavCBAdjustPreview            = 11                            /* preview button was clicked or the preview was resized */
  192. };
  193.  
  194.  
  195. typedef SInt32                             NavEventCallbackMessage;
  196. typedef UInt32                             NavCallBackUserData;
  197. /* for events and customization: */
  198. typedef CALLBACK_API( void , NavEventProcPtr )(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, NavCallBackUserData callBackUD);
  199. /* for preview support: */
  200. typedef CALLBACK_API( Boolean , NavPreviewProcPtr )(NavCBRecPtr callBackParms, NavCallBackUserData callBackUD);
  201. /* filtering callback information: */
  202. typedef CALLBACK_API( Boolean , NavObjectFilterProcPtr )(AEDesc *theItem, void *info, NavCallBackUserData callBackUD, NavFilterModes filterMode);
  203. typedef STACK_UPP_TYPE(NavEventProcPtr)                         NavEventUPP;
  204. typedef STACK_UPP_TYPE(NavPreviewProcPtr)                         NavPreviewUPP;
  205. typedef STACK_UPP_TYPE(NavObjectFilterProcPtr)                     NavObjectFilterUPP;
  206. enum { uppNavEventProcInfo = 0x00000FC0 };                         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  207. enum { uppNavPreviewProcInfo = 0x000003D0 };                     /* pascal 1_byte Func(4_bytes, 4_bytes) */
  208. enum { uppNavObjectFilterProcInfo = 0x00002FD0 };                 /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  209. #define NewNavEventProc(userRoutine)                             (NavEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavEventProcInfo, GetCurrentArchitecture())
  210. #define NewNavPreviewProc(userRoutine)                             (NavPreviewUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavPreviewProcInfo, GetCurrentArchitecture())
  211. #define NewNavObjectFilterProc(userRoutine)                     (NavObjectFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavObjectFilterProcInfo, GetCurrentArchitecture())
  212. #define CallNavEventProc(userRoutine, callBackSelector, callBackParms, callBackUD)  CALL_THREE_PARAMETER_UPP((userRoutine), uppNavEventProcInfo, (callBackSelector), (callBackParms), (callBackUD))
  213. #define CallNavPreviewProc(userRoutine, callBackParms, callBackUD)  CALL_TWO_PARAMETER_UPP((userRoutine), uppNavPreviewProcInfo, (callBackParms), (callBackUD))
  214. #define CallNavObjectFilterProc(userRoutine, theItem, info, callBackUD, filterMode)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppNavObjectFilterProcInfo, (theItem), (info), (callBackUD), (filterMode))
  215.  
  216. enum {
  217.     kNavCtlShowDesktop            = 0,                            /*    show desktop,                 parms = nil */
  218.     kNavCtlSortBy                = 1,                            /*    sort key field,             parms->NavSortKeyField */
  219.     kNavCtlSortOrder            = 2,                            /*    sort order,                    parms->NavSortOrder */
  220.     kNavCtlScrollHome            = 3,                            /*    scroll list home,            parms = nil */
  221.     kNavCtlScrollEnd            = 4,                            /*    scroll list end,            parms = nil */
  222.     kNavCtlPageUp                = 5,                            /*    page list up,                parms = nil */
  223.     kNavCtlPageDown                = 6,                            /*    page list down,                parms = nil */
  224.     kNavCtlGetLocation            = 7,                            /*    get current location,        parms<-AEDesc */
  225.     kNavCtlSetLocation            = 8,                            /*    set current location,        parms->AEDesc */
  226.     kNavCtlGetSelection            = 9,                            /*    get current selection,        parms<-AEDescList */
  227.     kNavCtlSetSelection            = 10,                            /*    set current selection,        parms->AEDescList */
  228.     kNavCtlShowSelection        = 11,                            /*    make selection visible,        parms = nil */
  229.     kNavCtlOpenSelection        = 12,                            /*    open view of selection,        parms = nil */
  230.     kNavCtlEjectVolume            = 13,                            /*    eject volume,                parms->vRefNum */
  231.     kNavCtlNewFolder            = 14,                            /*    create a new folder,        parms->StringPtr */
  232.     kNavCtlCancel                = 15,                            /*    cancel dialog,                parms = nil */
  233.     kNavCtlAccept                = 16,                            /*    accept dialog default,        parms = nil */
  234.     kNavCtlIsPreviewShowing        = 17,                            /*    query preview status,        parms<-Boolean */
  235.     kNavCtlAddControl            = 18,                            /*  add one control to dialog,    parms->ControlHandle */
  236.     kNavCtlAddControlList        = 19,                            /*    add control list to dialog,    parms->Handle (DITL rsrc) */
  237.     kNavCtlGetFirstControlID    = 20,                            /*    get 1st control ID,            parms<-UInt16 */
  238.     kNavCtlSelectCustomType        = 21,                            /*    select a custom menu item    parms->NavMenuItemSpec */
  239.     kNavCtlSelectAllType        = 22,                            /*  select an "All" menu item    parms->SInt16 */
  240.     kNavCtlGetEditFileName        = 23,                            /*    get save dialog's file name    parms<-StringPtr */
  241.     kNavCtlSetEditFileName        = 24                            /*    set save dialog's file name    parms->StringPtr */
  242. };
  243.  
  244. typedef SInt32                             NavCustomControlMessage;
  245.  
  246. enum {
  247.     kNavAllKnownFiles            = 0,
  248.     kNavAllReadableFiles        = 1,
  249.     kNavAllFiles                = 2
  250. };
  251.  
  252. typedef UInt16                             NavPopupMenuItem;
  253.  
  254. enum {
  255.     kNavSortNameField            = 0,
  256.     kNavSortDateField            = 1
  257. };
  258.  
  259. typedef UInt16                             NavSortKeyField;
  260.  
  261. enum {
  262.     kNavSortAscending            = 0,
  263.     kNavSortDescending            = 1
  264. };
  265.  
  266. typedef UInt16                             NavSortOrder;
  267.  
  268. enum {
  269.     kNavDefaultNavDlogOptions    = 0x000000E4,                    /* use defaults for all the options */
  270.     kNavNoTypePopup                = 0x00000001,                    /* don't show file type/extension popup on Open/Save */
  271.     kNavDontAutoTranslate        = 0x00000002,                    /* don't automatically translate on Open */
  272.     kNavDontAddTranslateItems    = 0x00000004,                    /* don't add translation choices on Open/Save */
  273.     kNavExtendPopup                = 0x00000008,                    /* extend translation choices on Open/Save */
  274.     kNavAllFilesInPopup            = 0x00000010,                    /* "All Files" menu item in the type popup on Open */
  275.     kNavAllowStationery            = 0x00000020,                    /* allow saving of stationery files */
  276.     kNavAllowPreviews            = 0x00000040,                    /* allow to show previews */
  277.     kNavAllowMultipleFiles        = 0x00000080,                    /* allow multiple items to be selected */
  278.     kNavAllowInvisibleFiles        = 0x00000100,                    /* allow invisible items to be shown */
  279.     kNavDontResolveAliases        = 0x00000200,                    /* don't resolve aliases */
  280.     kNavSelectDefaultLocation    = 0x00000400                    /* make the default location the browser selection */
  281. };
  282.  
  283. typedef UInt32                             NavDialogOptionFlags;
  284.  
  285. enum {
  286.     kNavTranslateInPlace        = 0,                            /*    translate in place, replacing translation source file (default for Save) */
  287.     kNavTranslateCopy            = 1                                /*    translate to a copy of the source file (default for Open) */
  288. };
  289.  
  290. typedef UInt32                             NavTranslationOptions;
  291.  
  292. struct NavMenuItemSpec {
  293.     UInt16                             version;
  294.     OSType                             menuCreator;
  295.     OSType                             menuType;
  296.     Str255                             menuItemName;
  297.     char                             reserved[245];
  298. };
  299. typedef struct NavMenuItemSpec            NavMenuItemSpec;
  300. typedef NavMenuItemSpec *                NavMenuItemSpecPtr;
  301. typedef NavMenuItemSpecPtr *            NavMenuItemSpecHandle;
  302.  
  303. struct NavTypeList {
  304.     OSType                             componentSignature;
  305.     short                             reserved;
  306.     short                             osTypeCount;
  307.     OSType                             osType[1];
  308. };
  309. typedef struct NavTypeList                NavTypeList;
  310. typedef NavTypeList *                    NavTypeListPtr;
  311. typedef NavTypeListPtr *                NavTypeListHandle;
  312.  
  313. struct NavDialogOptions {
  314.     UInt16                             version;
  315.     NavDialogOptionFlags             dialogOptionFlags;            /* option flags for affecting the dialog's behavior */
  316.     Point                             location;                    /* top-left location of the dialog, or {-1,-1} for default position */
  317.     Str255                             clientName;
  318.     Str255                             windowTitle;
  319.     Str255                             actionButtonLabel;            /* label of the default button (or null string for default) */
  320.     Str255                             cancelButtonLabel;            /* label of the cancel button (or null string for default) */
  321.     Str255                             savedFileName;                /* default name for text box in NavPutFile (or null string for default) */
  322.     Str255                             message;                    /* custom message prompt (or null string for default) */
  323.     UInt32                             preferenceKey;                /* a key for to managing preferences for using multiple utility dialogs */
  324.     Handle                             popupExtension;                /* extended popup menu items, an array of NavMenuItemSpecs */
  325.     char                             reserved[494];
  326. };
  327. typedef struct NavDialogOptions            NavDialogOptions;
  328. /* data returned by the utility dialogs: */
  329.  
  330. struct NavReplyRecord {
  331.     UInt16                             version;
  332.     Boolean                         validRecord;                /* open/save: true if the user confirmed a selection, false on cancel */
  333.     Boolean                         replacing;                    /* save: true if the user is overwriting an existing object for save */
  334.     Boolean                         isStationery;                /* save: true if the user wants to save an object as stationery */
  335.     Boolean                         translationNeeded;            /* save: translation is 'needed', open: translation 'has taken place' */
  336.     AEDescList                         selection;                    /* open/save: list of AppleEvent descriptors of the chosen object(s) */
  337.     ScriptCode                         keyScript;                    /* open/save: script in which the name of each item in 'selection' is to be displayed */
  338.     FileTranslationSpec **            fileTranslation;            /* open/save: list of file translation specs of the chosen object(s), if translation is needed */
  339.     UInt32                             reserved1;
  340.     char                             reserved[231];
  341. };
  342. typedef struct NavReplyRecord            NavReplyRecord;
  343. EXTERN_API( OSErr )
  344. NavLoad                            (void);
  345.  
  346. EXTERN_API( OSErr )
  347. NavUnload                        (void);
  348.  
  349. EXTERN_API( UInt32 )
  350. NavLibraryVersion                (void);
  351.  
  352. EXTERN_API( OSErr )
  353. NavGetDefaultDialogOptions        (NavDialogOptions *        dialogOptions);
  354.  
  355.  
  356. EXTERN_API( OSErr )
  357. NavGetFile                        (AEDesc *                defaultLocation,
  358.                                  NavReplyRecord *        reply,
  359.                                  NavDialogOptions *        dialogOptions,
  360.                                  NavEventUPP             eventProc,
  361.                                  NavPreviewUPP             previewProc,
  362.                                  NavObjectFilterUPP     filterProc,
  363.                                  NavTypeListHandle         typeList,
  364.                                  NavCallBackUserData     callBackUD);
  365.  
  366. EXTERN_API( OSErr )
  367. NavPutFile                        (AEDesc *                defaultLocation,
  368.                                  NavReplyRecord *        reply,
  369.                                  NavDialogOptions *        dialogOptions,
  370.                                  NavEventUPP             eventProc,
  371.                                  OSType                 fileType,
  372.                                  OSType                 fileCreator,
  373.                                  NavCallBackUserData     callBackUD);
  374.  
  375. EXTERN_API( OSErr )
  376. NavAskSaveChanges                (NavDialogOptions *        dialogOptions,
  377.                                  NavAskSaveChangesAction  action,
  378.                                  NavAskSaveChangesResult * reply,
  379.                                  NavEventUPP             eventProc,
  380.                                  NavCallBackUserData     callBackUD);
  381.  
  382. EXTERN_API( OSErr )
  383. NavCustomAskSaveChanges            (NavDialogOptions *        dialogOptions,
  384.                                  NavAskSaveChangesResult * reply,
  385.                                  NavEventUPP             eventProc,
  386.                                  NavCallBackUserData     callBackUD);
  387.  
  388. EXTERN_API( OSErr )
  389. NavAskDiscardChanges            (NavDialogOptions *        dialogOptions,
  390.                                  NavAskDiscardChangesResult * reply,
  391.                                  NavEventUPP             eventProc,
  392.                                  NavCallBackUserData     callBackUD);
  393.  
  394. EXTERN_API( OSErr )
  395. NavChooseFile                    (AEDesc *                defaultLocation,
  396.                                  NavReplyRecord *        reply,
  397.                                  NavDialogOptions *        dialogOptions,
  398.                                  NavEventUPP             eventProc,
  399.                                  NavPreviewUPP             previewProc,
  400.                                  NavObjectFilterUPP     filterProc,
  401.                                  NavTypeListHandle         typeList,
  402.                                  NavCallBackUserData     callBackUD);
  403.  
  404. EXTERN_API( OSErr )
  405. NavChooseFolder                    (AEDesc *                defaultLocation,
  406.                                  NavReplyRecord *        reply,
  407.                                  NavDialogOptions *        dialogOptions,
  408.                                  NavEventUPP             eventProc,
  409.                                  NavObjectFilterUPP     filterProc,
  410.                                  NavCallBackUserData     callBackUD);
  411.  
  412. EXTERN_API( OSErr )
  413. NavChooseVolume                    (AEDesc *                defaultSelection,
  414.                                  NavReplyRecord *        reply,
  415.                                  NavDialogOptions *        dialogOptions,
  416.                                  NavEventUPP             eventProc,
  417.                                  NavObjectFilterUPP     filterProc,
  418.                                  NavCallBackUserData     callBackUD);
  419.  
  420. EXTERN_API( OSErr )
  421. NavChooseObject                    (AEDesc *                defaultLocation,
  422.                                  NavReplyRecord *        reply,
  423.                                  NavDialogOptions *        dialogOptions,
  424.                                  NavEventUPP             eventProc,
  425.                                  NavObjectFilterUPP     filterProc,
  426.                                  NavCallBackUserData     callBackUD);
  427.  
  428. EXTERN_API( OSErr )
  429. NavNewFolder                    (AEDesc *                defaultLocation,
  430.                                  NavReplyRecord *        reply,
  431.                                  NavDialogOptions *        dialogOptions,
  432.                                  NavEventUPP             eventProc,
  433.                                  NavCallBackUserData     callBackUD);
  434.  
  435. EXTERN_API( OSErr )
  436. NavTranslateFile                (NavReplyRecord *        reply,
  437.                                  NavTranslationOptions     howToTranslate);
  438.  
  439. EXTERN_API( OSErr )
  440. NavCompleteSave                    (NavReplyRecord *        reply,
  441.                                  NavTranslationOptions     howToTranslate);
  442.  
  443. EXTERN_API( OSErr )
  444. NavCustomControl                (NavContext             context,
  445.                                  NavCustomControlMessage  selector,
  446.                                  void *                    parms);
  447.  
  448. EXTERN_API( OSErr )
  449. NavDisposeReply                    (NavReplyRecord *        reply);
  450.  
  451. EXTERN_API( Boolean )
  452. NavServicesCanRun                (void);
  453.  
  454. #if GENERATINGCFM
  455. #ifdef __cplusplus
  456. inline pascal Boolean NavServicesAvailable() { return ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun()); }
  457. #else
  458. #define NavServicesAvailable()     ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun())
  459. #endif
  460. #else
  461. pascal Boolean NavServicesAvailable();
  462. #endif
  463.  
  464. #if PRAGMA_STRUCT_ALIGN
  465.     #pragma options align=reset
  466. #elif PRAGMA_STRUCT_PACKPUSH
  467.     #pragma pack(pop)
  468. #elif PRAGMA_STRUCT_PACK
  469.     #pragma pack()
  470. #endif
  471.  
  472. #ifdef PRAGMA_IMPORT_OFF
  473. #pragma import off
  474. #elif PRAGMA_IMPORT
  475. #pragma import reset
  476. #endif
  477.  
  478. #ifdef __cplusplus
  479. }
  480. #endif
  481.  
  482. #endif /* __NAVIGATION__ */
  483.  
  484.